home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
formats
/
iff
/
newiff.lzh
/
NewIFF
/
NewIFF.lzh
/
newiff
/
iffp
/
iff.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-18
|
4KB
|
175 lines
/*
*
* iff.h: General Definitions for IFFParse modules
*
* 10/20/91
*/
#ifndef IFFP_IFF_H
#define IFFP_IFF_H
#include "iffp/compiler.h"
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_MEMORY_H
#include <exec/memory.h>
#endif
#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#ifndef UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif
#ifndef LIBRARIES_IFFPARSE_H
#include <libraries/iffparse.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef MYDEBUG_H
#include "iffp/debug.h"
#endif
#ifndef NO_PROTOS
#include <clib/exec_protos.h>
#include <clib/utility_protos.h>
#include <clib/iffparse_protos.h>
#endif
#ifndef NO_SAS_PRAGMAS
extern struct Library *SysBase;
#include <pragmas/exec_pragmas.h>
extern struct Library *IFFParseBase;
#include <pragmas/iffparse_pragmas.h>
extern struct Library *DOSBase;
#include <pragmas/dos_pragmas.h>
#endif
#ifndef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef ABS
#define ABS(x) ((x) < 0 ? -(x) : (x))
#endif
/* Locale stuff */
#include "iffp/iffpstringids.h"
#ifndef TEXTTABLE_H
struct AppString
{
LONG as_ID;
STRPTR as_Str;
};
#endif
extern struct AppString AppStrings[];
#define SI(i) GetString(i)
#define CkErr(expression) {if (!error) error = (expression);}
#define ChunkMoreBytes(cn) (cn->cn_Size - cn->cn_Scan)
#define IS_ODD(a) (a & 1)
#define IFF_OKAY 0L
#define CLIENT_ERROR 1L
#define NOFILE 5L
#define message printf
/* Generic Chunk ID's we may encounter */
#define ID_ANNO MAKE_ID('A','N','N','O')
#define ID_AUTH MAKE_ID('A','U','T','H')
#define ID_CHRS MAKE_ID('C','H','R','S')
#define ID_Copyright MAKE_ID('(','c',')',' ')
#define ID_CSET MAKE_ID('C','S','E','T')
#define ID_FVER MAKE_ID('F','V','E','R')
#define ID_NAME MAKE_ID('N','A','M','E')
#define ID_TEXT MAKE_ID('T','E','X','T')
#define ID_BODY MAKE_ID('B','O','D','Y')
/* Used to keep track of allocated IFFHandle, and whether file is
* clipboard or not, filename, copied chunks, etc.
* This structure is included in the beginning of every
* form-specific info structure used by the example modules.
*/
struct ParseInfo {
/* general parse.c related */
struct IFFHandle *iff; /* to be alloc'd with AllocIFF */
UBYTE *filename; /* current filename of this ui */
LONG *propchks; /* properties to get */
LONG *collectchks; /* properties to collect */
LONG *stopchks; /* stop on these (like BODY) */
BOOL opened; /* this iff has been opened */
BOOL clipboard; /* file is clipboard */
BOOL hunt; /* we are parsing a complex file */
BOOL Reserved1; /* must be zero for now */
/* for copychunks.c - for read/modify/write programs
* and programs that need to keep parsed chunk info
* around after closing file.
* Deallocated by freechunklist();
*/
struct Chunk *copiedchunks;
/* application may hang its own list of new chunks here
* just to keep it with the frame.
*/
struct Chunk *newchunks;
ULONG Reserved[8];
};
/*
* Used by some modules to save or pass a singly linked list of chunks
*/
struct Chunk {
struct Chunk *ch_Next;
long ch_Type;
long ch_ID;
long ch_Size;
void *ch_Data;
};
#ifndef NO_PROTOS
/* parse.c */
LONG openifile(struct ParseInfo *pi,UBYTE *filename, ULONG iffopenmode);
void closeifile(struct ParseInfo *pi);
LONG parseifile(struct ParseInfo *pi,LONG groupid,LONG grouptype,
LONG *propchks,LONG *collectchks,LONG *stopchks);
LONG getcontext(struct IFFHandle *iff);
LONG nextcontext(struct IFFHandle *iff);
LONG currentchunkis(struct IFFHandle *iff, LONG type, LONG id);
LONG contextis(struct IFFHandle *iff, LONG type, LONG id);
UBYTE *findpropdata(struct IFFHandle *iff, LONG type, LONG id);
void initiffasstdio(struct IFFHandle *iff);
LONG chkcnt(LONG *taggedarray);
long PutCk(struct IFFHandle *iff, long id, long size, void *data);
/* iffpstrings.c */
UBYTE *openScreenErr(ULONG errorcode);
UBYTE *IFFerr(LONG error);
void OpenStrings(void);
void CloseStrings(void);
UBYTE *GetString(ULONG id);
/* copychunks.c */
struct Chunk *copychunks(struct IFFHandle *iff,
LONG *propchks, LONG *collectchks, ULONG memtype);
void freechunklist(struct Chunk *first);
struct Chunk *findchunk(struct Chunk *first, long type, long id);
long writechunklist(struct IFFHandle *iff, struct Chunk *first);
#endif /* NO_PROTOS */
#endif /* IFFP_IFF_H */